//表示分配一个长度为6个字节的的Buffer
//会把所有的字节设置为0
//可以提供默认值 Buffer.alloc(6,2)

//这个效率低一些
let buf1 = Buffer.alloc(6);
console.log(buf1);
//分配一块没有初始化的内存(内存中可能存在其他数据)
var buf2 = Buffer.allocUnsafe(6);
console.log(buf2);

//一个汉字在utf-8中是三个字节
//根据一个字符串初始化Buffer
var buf3 = Buffer.from("珠峰");
console.log(buf3);

var buf4 = Buffer.alloc(4);
console.log(buf4);
//填充的值,开始位置和结束位置
buf4.fill(3, 1, 3);
console.log(buf4);
//填充的值,开始位置和填充的字节长度
buf4.write("珠峰", 0, 3, "utf8"); //只能添加'珠'子,三个字节

console.log(buf4.toString()); //转成汉字
//向指定索引写入一个8位的整数,即一个字节
//第一个位置输入一个8位整数16
buf4.writeInt8(16, 1);

//  string_decoder
//  他的出现为了解决乱码问题

let buf9 = Buffer.from("何玉硕");
let buf10 = buf9.slice(0, 5);
console.log(buf10.toString()); //会有乱码
let { StringDecoder } = require("string_decoder");
let sd = new StringDecoder();
//write的时候会判断是不是一个字符,如何是的话输出
//不是的的话会缓存在对象内部,下次在write的时候把缓存中那拿出来一起输出
console.log(sd.write(buf10));

let buf11 = buf9.slice(5);

//concat连接buffer
let a = Buffer.from("何");
let b = Buffer.from("玉硕");
//Buffer.concat([a, b],6)可以设置连接字节数
let result = Buffer.concat([a, b]);
console.log(result);

//判断一个Buffer是否是Buffer
Buffer.isBuffer;

// 2.获取字节的长度(显示是字符串所代表Buffer的长度)

console.log(Buffer.byteLength("何玉硕"));
